//引入路由
import { createRouter, createWebHistory } from 'vue-router'
const router = createRouter({
  //hash模式，地址中带#
  history: createWebHistory(),
  routes: [
    {
      path: '/',
      component: () => import('@/pages/Layout/index.vue'),
      redirect: '/layout',
      name:'layout',
      meta: {
        title: '首页',
        isLogin: true,//是否需要登录
      },
      children: [
        {
          path: '/layout',
          component: () => import('@/pages/Home/index.vue'),
          name: 'home',
          meta: {
            title: '首页'
          },
        },
        //在这里加动态路由
      ]
    },
    {
      path: '/login',
      name:'login',
      component: () => import('@/pages/Login/index.vue'),
    },

  ],
  scrollBehavior(to, from, savedPosition) {
    // 始终滚动到顶部
    return { top: 0 }
  },
})

import { usemenuInfoStore } from '@/store/modules/menu'
import { isTokenExpired } from '@/utils/common'
// router.beforeEach((to, from, next) => {
//   const isLoggedIn = JSON.parse(localStorage.getItem('userInfo'))
//   const menuInfoStore = usemenuInfoStore()

//   if (to.path === '/login' && isLoggedIn) {
//     console.log('已登录且访问登录页，重定向到首页');
//     next('/'); // 重定向到首页
//   }
//   else if (!isLoggedIn && to.path !== '/login') {
//     console.log('未登录且访问其他页面，重定向到登录页');
//     next('/login'); // 重定向到登录页
//   }
//   else if (isLoggedIn && to.path !== '/login') {
//     console.log('登录且访问其他页面');
//     // 如果第一次进入没有菜单
//     if (!menuInfoStore.menuInfo.length) {
//       menuInfoStore.changemenuInfo().then(res => {
//         const layoutRoute = router.getRoutes().find(route => route.name === 'layout');
//         if (layoutRoute) {
//           res.forEach(route => {
//             router.addRoute('layout', route);
//           });
//         }
//         next({ ...to, replace: true }); // 使用 replace 避免历史记录问题
//       }).catch(error => {
//         console.error('获取菜单信息失败:', error);
//         next('/login');
//       });
//     } else {
//       next() // 已有菜单，正常导航
//     }
//   }
//   else {
//     // 未登录且访问登录页，或其他未处理情况
//     next() // 必须添加这一行，确保导航继续
//     menuInfoStore.deletemenuInfo()
//   }
// });
router.beforeEach((to, from, next) => {
  const menuInfoStore = usemenuInfoStore()
  //判断是否需要登录（只有登录了才能查看页面，否则什么也看不了）
  console.log(to.matched);
  // const { accessToken } = JSON.parse(localStorage.getItem('userInfo'))
  if (to.matched.some(ele => ele.meta.isLogin) || to.matched.length == 0) {
    //如果本地存储里面有token
    if (JSON.parse(localStorage.getItem('userInfo'))) {
      //如果第一次进入没有菜单
      if (!menuInfoStore.menuInfo.length) {
        menuInfoStore.changemenuInfo().then(res => {
          // console.log(res);
          // 添加动态路由
          const layoutRoute = router.getRoutes().find(route => route.name === 'layout');
          if (layoutRoute) {
            res.forEach(route => {
              // 将动态路由添加到 layout 路由的 children 中
              router.addRoute('layout', route);
            });
          }
          next(to.fullPath); // 重新加载当前路由以应用新的路由配置
        }).catch(error => {
          console.error('获取菜单信息失败:', error);
          next('/login');
        });
      } else {
        //如果有菜单，反正不是第一次登录，就走这里（在这里写token过期后的事情）

        // console.log('111');
        // if (isTokenExpired(accessToken)) {
        //   next('/login');
        // } else {
        //   next()
        // }
        next()
      }
    } else {
      //没登录
      next('/login')
    }
  }
  else {
    // console.log('444');
    menuInfoStore.deletemenuInfo()
    next()
  }
})
export default router